home *** CD-ROM | disk | FTP | other *** search
/ Nibble Magazine / nib09.dsk / THREE-D MAPPING.bas < prev    next >
BASIC Source File  |  2023-02-26  |  3KB  |  78 lines

  1. 1  REM  **********************
  2. 2  REM  *  THREE-D MAPPING   *
  3. 3  REM  *  BY R. M. SMYTHE   *
  4. 4  REM  * COPYRIGHT (C) 1982 *
  5. 5  REM  * BY MICRO-SPARC INC *
  6. 6  REM  * LINCOLN, MA. 01773 *
  7. 7  REM  **********************
  8. 30  HOME : INVERSE : PRINT "                           "
  9. 40  PRINT " ";: NORMAL : HTAB 27: INVERSE : PRINT " "
  10. 50  PRINT " ";: NORMAL : PRINT " 3-D CONTOUR MAP DISPLAY ";: INVERSE : PRINT " "
  11. 60  PRINT " ";: NORMAL : HTAB 27: INVERSE : PRINT " "
  12. 70  INVERSE : PRINT "                           ": NORMAL 
  13. 80  VTAB 10: HTAB 7: PRINT "R. M. SMYTHE"
  14. 97 :
  15. 98  REM  MAIN PROGRAM
  16. 99 :
  17. 100 NH% = 10: REM  NUMBER HORIZONS
  18. 110 NP% = 12: REM  NUMBER OF POINTS ALONG EACH HORIZON
  19. 120  DIM SPOT%(NH%,NP%,2)
  20. 130  GOSUB 200
  21. 140  HGR : HCOLOR= 3
  22. 150  GOSUB 300: REM  LOOK FROM GROUND LEVEL
  23. 160  VTAB 21: CALL  -958: INPUT "VIEW FROM ANGLE ";THETA
  24. 170 THETA = THETA *3.14/180
  25. 180  GOSUB 300
  26. 190  GOTO 160
  27. 197 :
  28. 198  REM  READ IN DATA SUBR.
  29. 199 :
  30. 200  VTAB 20: HTAB 7: FLASH : PRINT "READING DATA": NORMAL 
  31. 210  FOR LINE = 1 TO NH%
  32. 220  READ LD%(LINE): REM  DISTANCE FROM VIEWER
  33. 230  FOR PNT = 1 TO NP%:SPOT%(LINE,PNT,1) = PNT *20: READ SPOT%(LINE,PNT,2)
  34. 240  NEXT PNT,LINE: REM  DO FOR EACH POINT AND LINE
  35. 250  RETURN 
  36. 297 :
  37. 298  REM  DRAW PICTURE SUBR.
  38. 299 :
  39. 300  HGR :TEMPLO = 1: FOR LINE = 1 TO NH%
  40. 310 XL% = SPOT%(LINE,1,1):Y% = 150 -LD%(LINE) * SIN(THETA)
  41. 320 HL% =  -SPOT%(LINE,1,2) * COS(THETA) *3 +Y%
  42. 330  IF LINE = 1  THEN  IF (HL% >TEMPLO)  THEN TEMPLO = HL%
  43. 340  FOR PNT = 2 TO NP%
  44. 350 X% = SPOT%(LINE,PNT,1):Y% = 150 -LD%(LINE) * SIN(THETA)
  45. 360 H% =  -SPOT%(LINE,PNT,2) * COS(THETA) *3 +Y%
  46. 365  REM  SAVE HIGHEST VALUES FOR LIMITS TO ERASEING
  47. 370 HIGHEST = H%: IF HL% <H%  THEN HIGHEST = HL%
  48. 380  IF (H% >TEMPLO)  THEN TEMPLO = H%
  49. 390  HPLOT XL%,HL% TO X%,H%: REM  LAST POINT TO NEW POINT
  50. 397 :
  51. 398  REM  ERASE PROCEDURE
  52. 399 :
  53. 400  IF LINE = 1  THEN 480: REM  NO ERASING NEEDED
  54. 410  HCOLOR= 0: REM  BLACK
  55. 420  FOR A = HIGHEST TO LOWEST
  56. 430 B = HL%: IF A >HL%  THEN B = A
  57. 440 C = H%: IF A >H%  THEN C = A
  58. 450  IF C >177  THEN C = 177: IF B >177  THEN B = 177
  59. 454 :
  60. 455  REM  ERASE PARALLEL TO THE DRAWN LINE BUT JUST BELOW, ALL THE WAY DOWN TO LOWEST POINT PLOTTED
  61. 456 :
  62. 460  HPLOT XL%,B +2 TO X%,C +2: NEXT A
  63. 470  HCOLOR= 3: REM  WHITE
  64. 480 XL% = X%:HL% = H%: REM  SAVE THIS POINT FOR NEXT TIME
  65. 490  NEXT PNT:LOWEST = TEMPLO: NEXT LINE: RETURN 
  66. 997 :
  67. 998  REM  DATA
  68. 999 :
  69. 1000  DATA  50,23,25,28,30,31,32,30,28,28,30,35,33
  70. 1010  DATA  45,23,25,31,34,33,32,30,28,27,30,35,33
  71. 1020  DATA  40,22,24,30,38,33,28,26,26,27,28,30,31
  72. 1030  DATA  35,20,22,27,32,27,27,25,24,24,24,25,27
  73. 1040  DATA  30,20,21,22,22,24,25,21,20,20,20,21,22
  74. 1050  DATA  25,16,15,15,17,21,26,20,17,17,17,17,18
  75. 1060  DATA  20,14,13,13,15,20,27,19,15,14,14,14,15
  76. 1070  DATA  15,11,10,10,12,15,20,15,13,11,11,11,12
  77. 1080  DATA  10,8,7,8,10,13,18,23,16,12,8,7,6
  78. 1090  DATA  5,4,5,5,4,6,10,14,18,13,10,8,8,8